package com.hskn.hss.module.totalcost.service;

import com.alibaba.fastjson.JSONObject;
import com.hskn.hss.core.annotation.DataScope;
import com.hskn.hss.exception.HssException;
import com.hskn.hss.module.tlcostoperate.entity.TlCostOperate;
import com.hskn.hss.module.tlempincidental.entity.TlEmpIncidental;
import com.hskn.hss.module.tlempsalary.entity.TlEmpSalary;
import com.hskn.hss.module.totalcost.dto.SummaryVehicleCostDTO;
import com.hskn.hss.module.totalcost.to.SummaryOperatingExpensesTO;
import com.hskn.hss.module.totalcost.to.SummaryPersonnelCostsTO;
import com.hskn.hss.module.totalcost.to.SummaryTotalCostTO;
import com.hskn.hss.module.totalcost.to.SummaryVehicleCostTO;
import com.hskn.hss.module.totalcost.vo.CarCostVO;
import com.hskn.hss.module.totalcost.vo.EmpCostVO;
import com.hskn.hss.module.totalcost.vo.OperateCostVO;
import com.hskn.hss.module.totalcost.vo.SummaryTotalCostVO;

import java.lang.reflect.InvocationTargetException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.List;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author hskn
 * @since 2021-05-15
 */
public interface TotalCostService {


    List<List<Object>> getOperateChars(SimpleDateFormat formatter, List<TlCostOperate> costOperateList, SummaryOperatingExpensesTO summaryOperatingExpensesTO) throws ParseException;

    @DataScope(deptAlias = "deptIdForCar", userAlias = "creatBy")
    List<TlCostOperate> getTlCostOperateList(SummaryOperatingExpensesTO summaryOperatingExpensesTO, SimpleDateFormat formatter);

    List<OperateCostVO> getopeList(SimpleDateFormat formatter, List<TlCostOperate> costOperateList, SummaryOperatingExpensesTO summaryOperatingExpensesTO) throws HssException, ParseException;

    List<List<Object>> getempChars(SimpleDateFormat formatter, List<TlEmpSalary> empSalaryList, List<TlEmpIncidental> empIncidentalList, SummaryPersonnelCostsTO summaryPersonnelCostsTO) throws ParseException;

    @DataScope(deptAlias = "empdeptid", userAlias = "creatBy")
    List<TlEmpSalary> getTlEmpSalaryList(SummaryPersonnelCostsTO summaryPersonnelCostsTO);

    @DataScope(deptAlias = "empdeptid", userAlias = "creatBy")
    List<TlEmpIncidental> getTlEmpIncidentalList(SummaryPersonnelCostsTO summaryPersonnelCostsTO);

    List<EmpCostVO> getempList(List<TlEmpSalary> empSalaryList, List<TlEmpIncidental> empIncidentalList, SummaryPersonnelCostsTO summaryPersonnelCostsTO) throws HssException, ParseException;

    List<List<Object>> getcarChars(SummaryVehicleCostDTO summaryVehicleCostDTO, SummaryVehicleCostTO summaryVehicleCostTO) throws ParseException;

    @DataScope(deptAlias = "deptidforcar", userAlias = "creatBy")
    SummaryVehicleCostDTO buildSummaryVehicleCostDTO(SummaryVehicleCostTO summaryVehicleCostTO);

    List<CarCostVO> getcarList(SummaryVehicleCostDTO summaryVehicleCostDTO,SummaryVehicleCostTO summaryVehicleCostTO) throws HssException, ParseException;

    List<SummaryTotalCostVO> gettotalList(SimpleDateFormat formatter ,List<TlCostOperate> costOperateList,List<TlEmpSalary> empSalaryList,List<TlEmpIncidental> empIncidentalList,SummaryVehicleCostDTO summaryVehicleCostDTO,SummaryTotalCostTO summaryTotalCostTO) throws HssException, ParseException;

    List<List<Object>> gettotalChars(SimpleDateFormat formatter ,List<TlCostOperate> costOperateList,List<TlEmpSalary> empSalaryList,List<TlEmpIncidental> empIncidentalList,SummaryVehicleCostDTO summaryVehicleCostDTO,SummaryTotalCostTO summaryTotalCostTO) throws ParseException;
}
